package com.zenithmind.disk.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 分享状态枚举
 * 遵循开闭原则：新增状态时只需添加枚举值
 */
@Getter
@AllArgsConstructor
public enum ShareStatus {
    
    /**
     * 已失效
     */
    INVALID(0, "已失效"),
    
    /**
     * 正常
     */
    NORMAL(1, "正常"),
    
    /**
     * 已暂停
     */
    PAUSED(2, "已暂停");
    
    private final Integer code;
    private final String description;
    
    /**
     * 根据代码获取枚举
     * @param code 状态代码
     * @return 对应的枚举值
     */
    public static ShareStatus fromCode(Integer code) {
        if (code == null) {
            return null;
        }
        
        for (ShareStatus status : values()) {
            if (status.code.equals(code)) {
                return status;
            }
        }
        
        throw new IllegalArgumentException("未知的分享状态代码: " + code);
    }
    
    /**
     * 检查是否为正常状态
     * @return true如果是正常状态
     */
    public boolean isNormal() {
        return this == NORMAL;
    }
    
    /**
     * 检查是否已失效
     * @return true如果已失效
     */
    public boolean isInvalid() {
        return this == INVALID;
    }
}
